1.20 Das Ereignis »Klick«
 
Zuerst lassen Sie uns das Ereignis »Klick« noch etwas genauer an einem Beispiel ansehen: Neben den beiden Rahmen werden zwei Kontrollkästchen aufgezogen. Sie benötigen keinen Rahmen, da sie unabhängig voneinander angeklickt werden können.
Das erste wird »chkMilch« genannt, die Beschriftung lautet: »mit Milch«, das zweite heißt »chkZucker« und trägt die Beschriftung »mit Zucker«. Der Benutzer - so lautet der Wunsch - soll nun seine Getränke mit einem Zusatz auswählen können.
Abbildung 1.36
Zwei Kontrollkästchen
In der Ok-Schaltfläche wird eine weitere Variable deklariert:
Dim strZusatz As String
Da CheckBoxes und Radiobuttons sehr ähnlich sind, können Sie direkt eingeben:
If chkMilch.Checked = True Then
strZusatz = " mit Milch"
End If
If chkZucker.Checked = True Then
strZusatz = strZusatz & " mit Zucker"
End If
Da beide Kontrollkästchen unabhängig voneinander gewählt werden können, müssen die beiden Verzweigungen unabhängig voneinander prüfen. Es darf nicht mit
ElseIf
gearbeitet werden, denn das würde beide Zutaten voneinander ausschließen.
Natürlich wird das Getränk mit Zusatz angezeigt:
MessageBox("Achtung: " & txtName.Text & _
"Jetzt gibt es " & strGröße & strGetränk & strZusatz & "!")
Zwei Dinge fallen auf. Zum einen ist das Ergebnis sprachlich nicht schön, wenn der Benutzer beide Zusätze gewählt hat. Dies kann verbessert werden:
If chkZucker.Checked = True Then
If strZustand = "" Then
strZusatz = strZusatz & " mit Zucker"
Else
strZusatz = strZusatz & " und mit Zucker"
End If
End If
Danach sollte natürlich die Variable strZusatz geleert werden. Nimmt der Benutzer nämlich zwei Getränke, so hat er noch die alte Information, die weiterverarbeitet wird:
strZusatz = ""
Abbildung 1.37
Mit Milch und Zucker
Schlimmer als diese sprachliche Ungenauigkeit scheint aber die Tatsache, dass der Benutzer nun auch Cola und Wasser mit Milch und mit Zucker bestellen kann. Das soll verboten werden. Man könnte es in der OK-Schaltfläche überprüfen und entsprechend reagieren. Oder man lässt erst gar nicht zu, dass er eine solche Kombination auswählt. Klickt der Benutzer auf Cola, dann werden Milch und Zucker deaktiviert. Das auslösende Ereignis ist also wieder der Klick. Mit einem Doppelklick auf den Cola-Button gelangen Sie in das Ereignis
Private Sub optCola_CheckedChanged(ByVal _
sender As System.Object, ByVal e As _
System.EventArgs) Handles OptCola.CheckedChanged
End Sub
Dort hinein kommt der Code
chkMilch.Enabled = False
chkZucker.Enabled = False
Die gleichen Zeilen kommen in das Auswähl-Ereignis des Optionsbuttons »optWasser«. Daraus ergibt sich das nächste Problem. Angenommen, der Benutzer wählt Cola aus, entscheidet sich aber anschließend doch für Kaffee. Nun kann er den Kaffee nicht mehr mit Milch oder Zucker trinken. Also muss in den anderen drei Optionsbuttons diese Eigenschaft deaktiviert werden:
chkMilch.Enabled = True
chkZucker.Enabled = True
Nun gibt es Kaffee, Tee und Schokolade mit Milch, bei Cola und Wasser kann diese Option nicht ausgewählt werden, daraus ergibt sich ein weiteres Problem:
Entscheidet sich der Benutzer zuerst für Kaffee mit Zucker, ändert anschließend aber seine Entscheidung und drückt auf »Wasser«, so sind zwar »Milch« und »Zucker« deaktiviert, aber die Haken sind noch eingeschaltet. Diese müssen entfernt werden. Der Code für Wasser und Cola wird erweitert:
chkMilch.Checked = False
chkZucker.Checked = False
|